
package com.shiku.im.comm.constants;

import java.util.*;


/**
 * 常量
 *
 * @author luorc
 */
public class KConstants {
    public static boolean isDebug = true;
    public static final String PAGE_INDEX = "0";
    public static final String PAGE_SIZE = "15";

    public static final byte MOENY_ADD = 1; //金钱增加

    public static final byte MOENY_REDUCE = 2; //金钱减少

    public static final double LBS_KM=111.01;

    public static final int LBS_DISTANCE=50;


    // 不经过普通接口校验,走特殊接口校验
    public static final Set<String> filterSet = new HashSet<String>() {{

        add("/redPacket/sendRedPacket");// 发送红包

        add("/redPacket/sendRedPacket/v1");// 发送红包新版

        add("/redPacket/openRedPacket");// 打开红包

        add("/user/recharge/getSign");// 充值

        add("/transfer/wx/pay");// 企业向个人支付转账

        add("/alipay/transfer");// 支付宝提现

        add("/skTransfer/sendTransfer");// 系统转账

        add("/skTransfer/receiveTransfer");// 接受转账

        add("/pay/codePayment");// 付款码支付

        add("/pay/codeReceipt");// 二维码收款

        add("/pay/passwordPayment");// 对外支付

        add("/open/authInterface");// 第三方校验权限

        add("/tigase/shiku_muc_msgs");// 获取群组消息漫游（用户微信公众号群聊）


    }};

    // 不需要校验的接口
    public static final Set<String> NO_CHECKAPI_SET = new HashSet<String>() {{

        add("/user/recharge/wxPayCallBack");

        add("/user/recharge/aliPayCallBack");

        add("/alipay/callBack");

        add("/open/authorization");

        add("/open/sendMsgByGroupHelper");

        add("/open/webAppCheck");

        add("/open/getHelperList");

        add("open/authInterface");

        add("/open/codeAuthorCheck");

        add("/user/checkReportUrl");// 校验URL合法性

        add("/user/wxUserOpenId");// 微信回调获取openId

        add("/user/getWxUser");// 获取微信对应的用户信息

        add("/open/code/oauth");// 第三方调用通过code拿到用户信息

        add("/yopPayCallBack/recharge");// 易宝充值回调

        add("/yopPayCallBack/sendRedPacket");// 易宝发送红包回调

        add("/yopPayCallBack/transfer");// 易宝转账回调

        add("/yopPayCallBack/withdraw");// 易宝提现回调

        add("/pay/SKPayTest");// sdk调用支付
        add("/pay/unifiedOrder");// sdk调用支付
    }};


    /**
     * 用户ID 起始值
     */
    public static int MIN_USERID = 100000;

    /**
     * 数据库分表 取余  计算值
     *
     * @author lidaye
     */
    public interface DB_REMAINDER {
        /**
         * 用户  联系人表  取余数
         */
        int ADDRESSBOOK = 10000;
        /**
         * 群成员
         */
        int MEMBER = 10000;

        /**
         * 好友
         */
        int FIRENDS = 10000;

        /**
         *
         */
        int DEFAULT = 10000;
    }

    /**
     * 建立索引的条件
     */
    public static final int DB_INDEX_COUNT = 50000;

    /**
     * @author lidaye
     * @Description: TODO(设备标识)
     * @date 2018年8月20日
     */
    public interface DeviceKey {
        List<String> RESOURCES = Arrays.asList("android", "ios", "pc", "mac", "web", "youjob");
        String Android = "android";
        String IOS = "ios";
        String WEB = "web";
        String PC = "pc";
        String MAC = "mac";
    }

    /**
     * @author lidaye
     * @Description: TODO(推送平台)
     * @date 2018年8月20日
     */
    public interface PUSHSERVER {
        //apns 推送
        String APNS = "apns";

        String APNS_VOIP = "apns_voip";
        //百度 推送
        String BAIDU = "baidu";
        //小米 推送
        String XIAOMI = "xiaomi";
        //华为 推送
        String HUAWEI = "huawei";
        //极光 推送
        String JPUSH = "Jpush";
        // google fcm推送
        String FCM = "fcm";
        // 魅族 推送
        String MEIZU = "meizu";
        // VIVO 推送
        String VIVO = "vivo";
        // OPPO 推送
        String OPPO = "oppo";
    }

    // 消费类型
    public interface ConsumeType {
        int USER_RECHARGE = 1;// 用户充值
        int PUT_RAISE_CASH = 2;// 用户提现
        int SYSTEM_RECHARGE = 3;// 后台充值
        int SEND_REDPACKET = 4;// 发红包
        int RECEIVE_REDPACKET = 5;// 领取红包
        int REFUND_REDPACKET = 6;// 红包退款
        int SEND_TRANSFER = 7;// 转账
        int RECEIVE_TRANSFER = 8;// 接受转账
        int REFUND_TRANSFER = 9;// 转账退回
        int SEND_PAYMENTCODE = 10;// 付款码付款
        int RECEIVE_PAYMENTCODE = 11;// 付款码收款
        int SEND_QRCODE = 12;// 二维码收款 付款方
        int RECEIVE_QRCODE = 13;// 二维码收款 收款方
        int LIVE_GIVE = 14;// 直播送礼物
        int LIVE_RECEIVE = 15;// 直播收到礼物
        int SYSTEM_HANDCASH = 16;// 后台手工提现
        int SDKTRANSFR_PAY = 17;// 第三方调用支付
        int MANUALPAYRECHARGE = 18;// 扫码手动充值
        int MANUALPAYWITHDRAW = 19;// 扫码手动提现

        int USER_SIGN_PACKET = 20;

    }

    public interface Room_Role {
        /**
         * 群组 创建者
         */
        byte CREATOR = 1;
        /**
         * 管理员
         */
        byte ADMIN = 2;
        /**
         * 群成员
         */
        byte MEMBER = 3;

        /**
         * 隐身人
         */
        byte INVISIBLE = 4;

        /**
         * 监护人（暂时没用）
         */
        byte GUARDIAN = 5;

    }

    // 后台角色权限
    public interface Admin_Role {
        // 游客  没有系统账单访问权限，没有财务人员访问权限，没有压测的访问权限，其他所有后台功能没有操作权限，只提供数据浏览
        byte TOURIST = 1;
        // 公众号
        byte PUBLIC = 2;
        // 机器人账号
        byte ROBOT = 3;
        // 客服  提供用户，群组，相关聊天记录，朋友圈相关 的数据浏览
        byte CUSTOMER = 4;
        // 管理员 除了 没有系统配置的操作权限，没有系统账单访问权限，没有财务人员访问权限，其他功能同超级管理员
        byte ADMIN = 5;
        // 超级管理员 所有权限
        byte SUPER_ADMIN = 6;
        // 财务  提供用户，群组，相关聊天记录，系统账单，红包,直播相关 的数据浏览   和账单相关的操作
        byte FINANCE = 7;
    }

    // 集群配置标识
    public interface CLUSTERKEY {
        int XMPP = 1;// xmpp服务器
        int HTTP = 2;// http服务器
        int VIDEO = 3;// 视频服务器
        int LIVE = 4;// 直播服务器
    }

    //订单状态
    public interface OrderStatus {
        int CREATE = 0;// 创建
        int END = 1;// 成功
        int DELETE = -1;// 删除
    }

    //支付方式
    public interface PayType {
        int ALIPAY = 1;// 支付宝支付
        int WXPAY = 2;// 微信支付
        int BALANCEAY = 3;// 余额支付
        int SYSTEMPAY = 4;// 系统支付
        int BANKCARD = 5;// 有银行卡支付
    }

    public interface Key {
        String RANDCODE = "KSMSService:randcode:%s";
        String IMGCODE = "KSMSService:imgcode:%s";
    }

    // KServiceException InternalException = new KServiceException(KConstants.ErrCode.InternalException,KConstants.ResultMsg.InternalException);

    public interface Expire {

        int DAY1 = 86400;
        int DAY7 = 604800;
        int HOUR12 = 43200;
        int HALFHOUR = 1800;
        int HOUR = 3600;
        int HALF_AN_HOUR = 1800;
        int MINUTE = 60;
    }


    public interface SystemNo {
        int System = 10000;//系统号码
        int NewKFriend = 10001;//新朋友
        int Circle = 10002;//商务圈
        int AddressBook = 10003;//通讯录
        int Notice = 10006;//系统通知

    }

    /**
     * @author lidaye
     * @Description: TODO(举报原因)
     * @date 2018年8月9日
     */
    public interface ReportReason {
        Map<Integer, String> reasonMap = new HashMap<Integer, String>() {
            {
                put(100, "发布不适当内容对我造成骚扰");
                put(101, "发布色情内容对我造成骚扰");
                put(102, "发布违法违禁内容对我造成骚扰");
                put(103, "发布赌博内容对我造成骚扰");
                put(104, "发布政治造谣内容对我造成骚扰");
                put(105, "发布暴恐血腥内容对我造成骚扰");
                put(106, "发布其他违规内容对我造成骚扰");

                put(120, "存在欺诈骗钱行为");
                put(130, "此账号可能被盗用了");
                put(140, "存在侵权行为");
                put(150, "发布仿冒品信息");

                put(200, "群成员存在赌博行为");
                put(210, "群成员存在欺诈骗钱行为");
                put(220, "群成员发布不适当内容对我造成骚扰");
                put(230, "群成员传播谣言信息");

                put(300, "网页包含欺诈信息(如：假红包)");
                put(301, "网页包含色情信息");
                put(302, "网页包含暴力恐怖信息");
                put(303, "网页包含政治敏感信息");
                put(304, "网页在收集个人隐私信息(如：钓鱼链接)");
                put(305, "网页包含诱导分享/关注性质的内容");
                put(306, "网页可能包含谣言信息");
                put(307, "网页包含赌博信息");
            }
        };

    }


    public interface ResultCode {

        //接口调用成功
        int Success = 1;

        //接口调用失败
        int Failure = 0;

        //服务器繁忙
        int SystemIsBusy = 10001;

        //功能未开放
        int FUNCTION_NOTOPEN = 10002;

        //请升级更新最新版本
        int PleaseUpgradeLatestVersion = 10003;

        /*
         * 有数据不能删除
         * */
        int HaveDataCanNotDelete = 10101;

        // 数据不存在或已删除
        int DataNotExists = 10102;


        //权限验证失败
        int AUTH_FAILED = 10110;

        // 权限不足
        int NO_PERMISSION = 10111;


        //请求参数验证失败，缺少必填参数或参数错误
        int ParamsAuthFail = 1010101;

        //缺少请求参数：
        int ParamsLack = 1010102;

        //接口内部异常
        int InternalException = 1020101;

        //链接已失效
        int Link_Expired = 1020102;

        //缺少访问令牌
        int TokenEillegal = 1030101;

        //访问令牌过期或无效
        int TokenInvalid = 1030102;


        /**
         * 登陆信息已失效
         */
        int LoginTokenInvalid = 1030112;
        /**
         * 登录信息已过期
         */
        int LoginTokenExpired = 1030113;

        //账号已存在
        int AccountExist = 1040100;

        //帐号不存在
        int AccountNotExist = 1040101;

        //帐号或密码错误
        int AccountOrPasswordIncorrect = 1040102;

        //原密码错误
        int OldPasswordIsWrong = 1040103;

        //短信验证码错误或已过期
        int VerifyCodeErrOrExpired = 1040104;

        //发送验证码失败,请重发!
        int SedMsgFail = 1040105;

        //请不要频繁请求短信验证码，等待{0}秒后再次请求
        int ManySedMsg = 1040106;

        //手机号码已注册!
        int PhoneRegistered = 1040107;


        //手机号码已注册!
        int PleaseNickName = 1040108;

        //用户昵称不合法!
        int NicknameWrongful = 1040109;

        //请输入图形验证码
        int NullImgCode = 1040215;

        //图形验证码错误
        int ImgCodeError = 1040216;


        //账号被锁定
        int ACCOUNT_IS_LOCKED = 1040304;

        // 第三方登录未绑定手机号码
        int UNBindingTelephone = 1040305;

        // 第三方登录提示账号不存在
        int SdkLoginNotExist = 1040306;

        // 二维码未被扫取
        int QRCodeNotScanned = 1040307;
        //二维码已扫码未登录
        int QRCodeScannedNotLogin = 1040308;
        //二维码已扫码登陆
        int QRCodeScannedLoginEd = 1040309;

        //二维码已失效
        int QRCode_TimeOut = 1040310;

        /*
         * 微信等第三方账号已绑定
         * */
        int ThirdPartyAlreadyBound = 1040316;

        // 账号已经绑定过其他第三方账号
        int repeatThirdPartyAlreadyBound = 1040317;


// --------------------------------- 华丽分割线------------------------------------------------------

        // 请填写手机号
        int PleaseFallTelephone = 100107;
        // 手机号未注册
        int PthoneIsNotRegistered = 100108;


        /**
         * 好友相关
         * <p>
         * 1005**
         */
        //FriendsController 不能添加自己
        int NotAddSelf = 100501;
        //FriendsController 添加好友失败
        int AddFriendsFailure = 100502;
        // 用户禁止二维码添加好友
        int NotQRCodeAddFriends = 100503;
        // 用户禁止名片添加好友
        int NotCardAddFriends = 100504;
        // 用户禁止从群组中添加好友
        int NotFromGroupAddFriends = 100505;
        // 用户禁止手机号搜索添加好友
        int NotTelephoneAddFriends = 100506;
        // 用户禁止昵称搜索添加好友
        int NotNickNameAddFriends = 100507;
        // 不能操作自己
        int NotOperateSelf = 100508;
        // 不能重复操作
        int NotRepeatOperation = 100509;
        // 对方已经是你的好友
        int FriendsIsExist = 100512;
        // 好友不存在
        int FriendsNotExist = 100511;
        // 好友不在我的黑名单中
        int NotOnMyBlackList = 100513;
        // 对方不是你的好友
        int NotYourFriends = 100510;
        // 关注成功
        int AttentionSuccess = 100514;
        // 关注成功已互为好友
        int AttentionSuccessAndFriends = 100515;
        // 关注失败
        int AttentionFailure = 100516;
        // 已被对方添加到黑名单
        int WasAddBlacklist = 100517;
        // 添加失败,该用户禁止添加好友
        int ProhibitAddFriends = 100518;

        // 没有通讯录好友
        int NotAdressBookFriends = 100520;

        //FriendGroupController 分组名称已存在
        int GroupNameExist = 100701;


        /**
         * 群标识码 相关
         */
        //LabelController 群标识码名已被使用
        int LabelNameIsUse = 100801;
        // 群标识码已添加
        int LabelIsExist = 100802;
        // 添加失败
        int AddFailure = 100803;
        // 群标识码名不能为空
        int NotLabelName = 100804;
        // 群标识码不存在
        int LabelNameNotExist = 100805;

        /**
         * 直播间相关
         * 1009**
         */
        //liveRoomController
        // 您的直播间已被锁住
        int LiveRoomLock = 100901;
        // 用户不在该房间
        int UserNotInLiveRoom = 100902;
        // 该直播间尚未开播，请刷新再试
        int LiveRoomNotStart = 100903;
        // 您已被踢出直播间
        int KickedLiveRoom = 100904;
        // 暂无礼物
        int NotHaveGift = 100905;
        // 不能设置主播为管理员
        int NotSetAnchorIsAdmin = 100906;
        // 该用户已经是管理员
        int UserIsAdmin = 100907;

        // 不能重复创建直播间
        int NotCreateRepeat = 100908;
        // 该成员不在当前直播间中
        int NotInLiveRoom = 100909;
        // 群组内已经有人正在直播
        int BeingLiveByRoom = 100910;

        //MsgController 评论内容不能为空
        int CommentNotNull = 101001;
        // 内容不存 或已被删除
        int ContenNoExist = 101002;
        // 该朋友圈禁止评论
        int NotComment = 101003;
        // 消息缓存解析失败
        int MsgCacheParsingFaliure = 101004;
        // 该短视频禁止评论
        int ShortVideoNotComment = 101005;


        /**
         * 群组相关
         * 1004**
         */
        // RoomController
        // 该群组已被后台锁定
        int RoomIsLock = 100401;
        // 群成员上限不能低于当前群成员人数
        int NotLowerGroupMember = 100402;
        // 请指定新群主
        int SpecifyNewOwner = 100403;
        // 不能转让群组给自己
        int NotTransferToSelf = 100404;
        // 对方不是群成员不能转让
        int NotGroupMember = 100405;
        // 不能禁言群主
        int NotBannedGroupOwner = 100406;
        // 邀请群成员 需要群主同意
        int InviteNeedAgree = 100421;
        // 不是好友不能邀请
        int NotFriendNoInvite = 100407;
        // 隐身人不可以邀请用户加群
        int NotInviteInvisible = 100408;

        // 群人数已达到上限，加入人数过多
        int RoomMemberAchieveMax = 100423;
        // 设置群人数不得超过10000
        int MaxCrowdNumber = 100425;
        // 禁止对隐身人禁言处理（隐身人不能发言）
        int NotChatInvisible = 100426;
        // 新建群最大人数超出群最大人数
        int PassRoomMax = 100427;

        // 红包类型错误，领取异常
        int ReceiveRedPackError = 100428;

        // 触发日发送限额
        int SendVerificationCodeErrorByUpper = 100429;
        // 非法手机号
        int SendVerificationCodeErrorByIllegalPhone = 100430;
        // 业务限流
        int SendVerificationCodeErrorByRequest = 100431;

        // 禁止普通用户建群
        int BanOrdinaryUsersCreateRoom = 100432;

        // 禁止普通群成员开直播
        int BanMemberOpenLive = 100433;

        // 发送短信过于频繁，请稍后再试
        int SendSMSFrequently = 100434;

        // 该用户已经实人认证
        int RealNameCertification = 100435;

		/*// 该用户实人认证失败，请稍后再试
		 int RealNameCertificationError = 100436;*/

        // 一键登录取号失败,请稍后再试
        int FailedToGetNumber = 100437;

        // 该身份信息已经绑定其他账号
        int RealNameUsedError = 100438;

        // 实人认证请求失败
        int RealpersonRequestError = 100439;

        // 实人认证未通过，请稍后再试
        int RealpersonResultError = 100440;

        // 该用户未实人认证
        int UserNoBeenRealperson = 100441;

        // 群组内管理员数量已达到上限
        int AdminMemberNumUpperLimit = 100442;

        // 该成员不在群组中
        int MemberNotInGroup = 100409;
        // 该后台管理员状态异常
        int BackAdminStatusError = 100422;
        // 不能移出群主
        int NotRemoveOwner = 100410;

        // 超过房间最大人数，加入房间失败
//		 int MoreMaxPeople = 100411;
        // 房间不存在
        int NotRoom = 100411;
        // 群主不能设置为管理员
        int RoomOwnerNotSetAdmin = 100412;
        // 该成员不是隐身人
        int MemberNotInvisible = 100413;
        // 该成员不是监控人
        int MemberNotMonitor = 100414;
        // 群组已过期失效
        int RoomTimeOut = 100415;
        // 群助手已存在
        int GroupHelperExist = 100416;
        // 群助手不存在
        int GroupHelperNotExist = 100417;
        // 关键字已存在
        int KeyWordIsExist = 100418;
        // 关键字不存在
        int KeyWordNotExist = 100419;
        // 删除失败
        int DeleteFailure = 100420;
        // 不能转让群组给隐身人
        int NotTransferToInvisible = 100424;


        // 该网页地址已被举报
        int WEBURLISREPORTED = 100203;


        //UserController 手机号已注册
        int TelephoneIsRegister = 100205;
        // 用户注册失败
        int FailedRegist = 100206;
        // 获取用户信息失败
        int FailedGetUserId = 100207;
        // 绑定关系不存在
        int NoBind = 100208;
        // 新旧密码一致,请重新输入
        int NewAndOldPwdConsistent = 100209;
        // 设置免打扰失败
        int SetDNDFailure = 100210;
        // 该用户不存在
        int UserNotExist = 100211;
        // 缺少通讯号
        int NotAccount = 100212;
        // 通讯号错误
        int ErrAccount = 100213;
        // 缺少code
        int NotCode = 100214;
        // 获取openid失败
        int GetOpenIdFailure = 100215;
        // 短信验证码不能为空
        int SMSCanNotEmpty = 100216;
        // 获取支付宝授权authInfo失败
        int GetAliAuthInfoFailure = 100217;

        // 禁止访问对方朋友圈
        int DontVisitFriendsMsg = 100219;
        //用户密钥不存在
        int USER_KEYPAIR_NOTEXIST = 100220;

        // 核验密码失败
        int VERIFYPASSWORDFAIL = 100222;
        // 没有权限打开地址位置相关设置
        int NOAUTHORITYOPENPOSITION = 100224;
        // --------------------------------- 华丽分割线------------------------------------------------------
        //授权失败
        int NO_AUTO = 101988;
        //授权成功
        int SUCCESS_AUTO = 101987;
        //登入超时
        int Login_OverTime = 101986;
        //设备序列化为空
        int DeviceSerial_NULL = 101985;
        //设备版本类型为空
        int DeviceType_NULL = 101984;
        //无设备号
        int NOFACILITY = 101983;
        //授权码失效
        int LOSEEFFECTIVENESS_AUTH = 101982;

        // --------------------------------- 华丽分割线------------------------------------------------------
        //申请公众号失败
        int NO_PASS = 101981;
        //用户已存在
        int USEREXITS = 101980;


        /**
         * 收藏相关
         * 105***
         */

        /**
         * 消息不支持收藏
         */
        int NOTSUPPORT_COLLECT = 105002;

        // 当前设置不保存单聊聊天记录,暂不支持收藏
        int NOSAVEMSGAND = 105003;

        //未开通支付相关功能
        int CLOSEPAY = 106001;
    }


    // 多点登录下操作类型
    public interface MultipointLogin {
        String SYNC_LOGIN_PASSWORD = "sync_login_password";// 修改密码
        String SYNC_PAY_PASSWORD = "sync_pay_password";// 支付密码
        String SYNC_PRIVATE_SETTINGS = "sync_private_settings";// 隐私设置
        String SYNC_LABEL = "sync_label";// 好友标签
        String SYNC_YOP_OPEN_ACCOUNT = "sync_yop_open_account";// 易宝支付账户设置
        String SYNC_REALNAME_CERTIFICATION = "sync_realname_certification";// 实人认证


        String TAG_FRIEND = "friend";// 好友相关
        String TAG_ROOM = "room";// 群组标签相关
        String TAG_LABLE = "label";// 好友分组操作相关
    }


    // 系统账号
    public interface systemAccount {
        int ADMIN_CONSOLE_ACCOUNT = 1000;// 后台超级管理员
        int AMOUNT_ACCOUNT = 1100;// 金额通知相关
        int CUSTOMER_ACCOUNT = 10000;// 系统客服公众号
    }

    //易宝
    public interface YopPayType {
        int RECHARGE = 1;// 易宝充值
        int WITHDRAW = 2;// 易宝提现
        int TRANSFER = 3;// 易宝转账
        int RECEIVETRANSFER = 4;// 易宝接收转账
        int SENDONEREDPACKET = 5;// 易宝一对一发红包
        int SENDGROUPREDPACKET = 6;// 发群普通红包
        int SENDRANDOMREDPACKET = 7;// 发拼手气红包
        int RECEIVEREDPACKET = 8;// 接收红包
        int USERFEE = 9;// 手续费
    }


}
